'''查重系统'''
# import jieba
# '''3.1生成分词列表 对文本集中的文本进行中文分词'''
# text="七月七日长生殿，夜班无人私语时"
# words=jieba.lcut(text)


'''3.2基于文本集建立词典，获取特征数'''
'''corpara.Dictionary 建立词典
   len（dictionary.koken2id）:词典中词的个数'''
from gensim import corpora
import jieba
'''文本集'''
text1="坚果果实"
text2='坚果实在好吃'
texts=[text1,text2]
'''将文本集生成分词列表'''
texts=[jieba.lcut(text) for text in  texts]
print("文本集:",texts)
# '''基于文本集建立词典'''
# dictionary=corpora.Dictionary(texts)
# print('词典:',dictionary)
# '''提取词典特征数'''
# feature_cnt=len(dictionary.token2id)
# print("词典特征数:{}".format(feature_cnt))

# '''3.3 基于词典建立预料库'''
# from gensim import  corpora
# import  jieba
# text1="来东京吃东京菜"
# text2="东京啊东京啊东京"
# texts=[text1,text2]
# texts=[jieba.lcut(text) for text in texts]
# dictionary=corpora.Dictionary(texts)
# print('词典（字典）:',dictionary.token2id)
# '''基于词典建立新的【语料库】'''
# corpora=[dictionary.doc2bow(text) for  text in texts]
# print("语科库:{}".format(corpora))

'''3.3.1 doc2bow函数'''
'''1、将所有单词取【集合】，并对每个单词分配一个ID号
以['东京', '啊', '东京', '啊', '东京']为例
对单词分配ID：东京→0；啊→4
变成：[0, 4, 0, 4, 0]
2、转换成稀疏向量
0有3个，即表示为(0, 3)
4有2个，即表示为(4, 2)
最终结果：[(0, 3), (4, 2)]'''

# '''3.3.2 搜索词也转成稀疏变量'''
# from  gensim import  corpora
# import jieba
# text1='南方医院无痛人流'
# text2='北方人流落南方'
# texts=[text1,text2]
# texts=[jieba.lcut(text) for text in texts]
# dictionary=corpora.Dictionary(texts)
# '''用【词典】把【搜索词】液转换为【稀疏变量】'''
# keyword='无痛人流'
# kw_vector=dictionary.doc2bow(jieba.lcut(keyword))
# print(kw_vector)

# '''3.4 用语料科训练【TE-IDF模型】'''
# from gensim import corpora,models,similarities
# import jieba
# text1='南方医院无痛人流'
# text2='北方人流落南方'
# texts=[text1,text2]
# texts=[jieba.lcut(text) for text in texts]
# dictionary=corpora.Dictionary(texts)
# corpora=[dictionary.doc2bow(text) for  text in texts]
# '''用【语科库】来训练【TE-IDF模型】'''
# tfidf=models.TfidfModel(corpora)
# print(tfidf)

'''3.5 相似度计算'''
from  gensim import corpora,models,similarities
import jieba
text1='南方医院无痛人流'
text2='北方人流落南方'
texts=[text1,text2]
keyword='无痛人流'
texts=[jieba.lcut(text) for text in texts]
dictionary=corpora.Dictionary(texts)
num_feature=len(dictionary.token2id)
corpus=[dictionary.doc2bow(text) for text in texts]
tfidf=models.TfidfModel(corpus)
new_vec=dictionary.doc2bow(jieba.lcut(keyword))
'''相似度计算'''
index = similarities.SparseMatrixSimilarity(tfidf[corpus], num_feature)
print('\nTF-IDF模型的稀疏向量集：')
for i in tfidf[corpus]:
    print(i)
print('\nTF-IDF模型的keyword稀疏向量：')
print(tfidf[new_vec])
print('\n相似度计算：')
sim=index[tfidf[new_vec]]
for i in range(len(sim)):
    print('第', i+1, '句话的相似度为：', sim[i])